/**
 * 注解
 * 针对Java特性的注解
 * 1）
 *
 * @volatile  var done = false // 在jvm中成为 volatile
 *
 * 2）
 * @transient  var recentLookup = new HashMap[String, String] //将字段标记伟瞬态的，在jvm中成为transient字段即不被序列化
 *
 * 3）
 * //strictfp可以保证浮点数运算的精确性，而且在不同的硬件平台会有一致的运行结果
 * @strictfp def calculate(x: Double) = ...
 *
 * 4）
 * @SerialVersionUID(1L)
 * 相当于Java类继承了 Serializable 定义了字段 private static final long serialVersionUID=1L;
 * @SerialVersionUID(1L)
 * class A extends Person with Serializable {//...}
 *
 * 5）
 * @throws
 *
 * class Book {
 *  @throws(classOf[IOException]) def do():Unit = {}
 * }
 *  对应的Java
 *  void do() throws IOException {}
 *  如果没有 @throws 注解java代码不会捕获该异常
 *
 * 6）变长参数注解 @varargs
 * 默认形况下
 * def do(s: String*) = {}
 * 编译器优化成：
 * def do(s: Seq[String]) = {}
 * 对应的java代码可能是
 * void do(List<String> s) = {}
 * 加上注解后
 * @varargs def do(s: String*) = {}
 * 对应的java代码是
 * void do(String...  s ) = {}
 *
 * 7）@scala.reflect.BeanProperty
 * @scala.reflect.BeanProperty val name: String
 * 会生成Java类型的getter、setter
 * getName()、setName(String name)
 *
 * 8）@tailrec
 * 尾递归优化，确保递归函数一定能正确执行
 */
final class test() extends scala.annotation.Annotation with scala.annotation.StaticAnnotation {

}


object Main extends App {

  printf("1")

}